#!/bin/bash
SCRIPT_HOME=$(cd "$(dirname "$0")"; pwd)
source "$SCRIPT_HOME/common_lib.sh"

# 调用 common_lib 中的动态获取函数
CONFIG_FILE=$(get_config_file "$1")

if [ ! -f "$CONFIG_FILE" ]; then
    log_err "配置文件未找到 (configs目录下无json文件 或 指定文件不存在)"
    exit 1
fi

log_info "正在读取配置文件: $CONFIG_FILE"

echo "========================================"
echo "          系统模块版本状态表            "
echo "========================================"

# 获取模块数量
count=$(jq '.modules | length' "$CONFIG_FILE")

for ((i=0; i<$count; i++)); do
    name=$(jq -r ".modules[$i].name" "$CONFIG_FILE")
    desc=$(jq -r ".modules[$i].description" "$CONFIG_FILE")
    active_v=$(jq -r ".modules[$i].active_version" "$CONFIG_FILE")
    active_s=$(jq -r ".modules[$i].active_sub_version" "$CONFIG_FILE")

    echo -e "模块: ${GREEN}$name${NC} ($desc)"
    echo -e "  当前激活: Version=[${YELLOW}$active_v${NC}] SubVersion=[${YELLOW}$active_s${NC}]"
    echo "  可用版本树:"
    
    # 遍历该模块的所有版本
    jq -c ".modules[$i].versions[]" "$CONFIG_FILE" | while read ver_obj; do
        v_name=$(echo "$ver_obj" | jq -r '.version')
        
        marker=" "
        if [ "$v_name" == "$active_v" ]; then marker="*"; fi
        
        echo -e "    [$marker] 版本: $v_name"
        
        # 遍历子版本
        echo "$ver_obj" | jq -r '.sub_versions[]' | while read sub; do
            s_marker=" "
            # 只有当父版本也匹配时，子版本匹配才有意义
            if [ "$v_name" == "$active_v" ] && [ "$sub" == "$active_s" ]; then s_marker="*"; fi
            echo "        - [$s_marker] $sub"
        done
    done
    echo "----------------------------------------"
done
